// Copyright 2019 Yunion
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package compute

const (
	MethodDirect       = "direct"
	MethodEIP          = "eip"
	MethodDNAT         = "dnat"
	MethodProxyForward = "proxy_forward"
)

type GuestSshableMethodData struct {
	Method string
	Host   string
	Port   int

	Sshable bool
	Reason  string

	ForwardDetails ForwardDetails
}

type ForwardDetails struct {
	ProxyAgentId    string
	ProxyEndpointId string
}

type GuestSshableOutput struct {
	User      string
	PublicKey string

	MethodTried []GuestSshableMethodData
}

type GuestHaveAgentInput struct {
}

type GuestHaveAgentOutput struct {
	Have bool
}

type GuestMakeSshableInput struct {
	User       string
	PrivateKey string
	Password   string
	Port       int
}

type GuestMakeSshableOutput struct {
	AnsiblePlaybookId string
}

type GuestMakeSshableCmdOutput struct {
	ShellCmd string
}

type GuestSetSshportInput struct {
	Port int
}

type GuestSshportOutput struct {
	Port int
}
